<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function a() {
            let time = new Date()
            console.log(time);
        }
        // a()

        // b是函数名 箭头左边是函数的参数 右边是函数的内容
        let b = () => {
            let time = new Date()
            console.log(time);
        }
        // b()

        // 箭头函数的缩写
        function fnA(val) {
            let time = new Date()
            return val + time.getFullYear()
        }
        // console.log(fnA('现在是'));

        let fnB = val => {
            let time = new Date()
            return val + time.getFullYear()
        }
        console.log(fnB('现在是'));

        // 箭头函数中，如果只有一句而且是返回语句 就可以省略return和函数的花括号
        let fnB1 = val => val + 2023
        console.log(fnB1('现在是'));

        // 箭头函数返回对象
        // 由于大括号被解释为代码块，所以如果箭头函数直接返回一个对象，必须在对象外面加上括号，否则会报错
        let getInfo = (age, name) => ({ name, age })
        console.log(getInfo('12天', '刘培强'));

        // function reducer(state, action) {
        //     return { ...state, ...newState };
        // }  普通函数 下面转换成箭头函数

        let reducer1 = (state, action) => ({...state, ...action })
        console.log(reducer1({name: 'hdd', age: 18}, {sex: 'nv', age: 20}));

        // 箭头函数获取参数
        let fn6 = (...arg) => {
            // 通过...arg获取了函数的所有参数，类似普通函数的arguments对象
            let arr1 = ['edg', 'rng', 'ig', 'lng']
            // arr1  前面加上...就会将数组拆开，不加...就仍然是一个整体 把火柴炮拆成呲花
            console.log([...arg, 999, 'hello', arr1]);
        }

        fn6(1,2,'a', true, ['qq', 'weibo'])        
    </script>
</body>

</html>